package com.youdoneed.user.admin;

import com.youdoneed.base.pagination.Page;
import com.youdoneed.base.pagination.Paging;
import com.youdoneed.user.model.Admin;
import com.youdoneed.user.model.Authority;

import java.util.List;

/**
 * @author Ewing
 * @date 2017年2月8日
 * @describe 管理员服务类接口
 */
public interface AdminService {
    /**
     * 管理员登录
     *
     * @param account  管理员账号
     * @param password 管理员密码
     */
    Admin adminLogin(String account, String password);

    /**
     * 管理员密码重置
     *
     * @param adminId     管理员用户id
     * @param oldPassword 管理员原密码
     * @param newPassword 管理员新密码
     */
    Admin resetPassword(String adminId, String oldPassword, String newPassword);

    /**
     * 通过管理员ID查找管理员对象
     *
     * @param adminId 管理员ID
     * @return Admin管理员对象
     */
    Admin findByAdminId(String adminId);

    /**
     * 添加管理员对象
     *
     * @param newAdmin 新增的管理员对象
     */
    Admin addAdmin(Admin newAdmin, String[] roleIds);

    /**
     * 查找管理员列表
     */
    Page<Admin> findAdminByName(String name, Paging paging);

    /**
     * 删除管理员
     *
     * @param admin 被删除用户
     */
    void deleteAdmin(Admin admin);

    /**
     * 修改管理员信息，并且更新拥有的角色
     */
    Admin updateAdmin(Admin admin, String[] roleIds);

    /**
     * 根据管理员ID获取管理员所有权限
     */
    List<Authority> getAuthorityMenus(String adminId);
}
